package com.zqxq.common.utils.sendSMS;

import com.alibaba.fastjson.JSONObject;
import com.zqxq.common.utils.HttpUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

import java.util.HashMap;
import java.util.Map;

/**
 * Created by 花生 on 2018-03-01.
 * desc: 253云通讯-国际短信工具类
 */
@Slf4j
public class ChuangLanSMSUtils {
    private static final String SMS_URL = "http://intapi.253.com/send/json";
    private static final String SMS_ACCOUNT = "I3315224";
    private static final String SMS_PASSWORD = "VUpMyQe5viea93";
    /**
     * 提交短信到创蓝253云通讯_国际短信平台
     * @param url   提交地址
     * @param account   平台账号
     * @param password  平台密码
     * @param msg       发送的短信的内容。长度不能超过536个字符
     * @param mobile    手机号码，格式(区号+手机号码)，
     * 例如：8615800000000，其中86为中国的区号，区号前不使用00开头,15800000000为接收短信的真实手机号码。
     * @return 提交成功后返回的消息ID
     */
    public static String postSMS(String url,String account,String password,String msg,String mobile){
        //组装提交的参数
        Map<String,String> paramMap = new HashMap();
        paramMap.put("account",account);
        paramMap.put("password",password);
        paramMap.put("msg",msg);
        paramMap.put("mobile",mobile);
        //提交短信
        String result = HttpUtils.doPostJson(url,paramMap);
        log.info("创蓝短信返回内容：{}",result);
        //解析返回的内容
        if(StringUtils.isNotBlank(result)){
            try {
                JSONObject resultJson = JSONObject.parseObject(result);
                String code = resultJson.getString("code");
                if("0".equals(code)){
                    //提交成功，返回消息Id
                    return resultJson.getString("msgid");
                }else {
                    log.error("创蓝提交短信失败，返回内容为：{}",result);
                }
            }catch (Exception e){
                log.error("解析创蓝提交短信返回的内容失败：{}",e.getMessage());
            }
        }else {
            log.error("创蓝提交短信失败，返回内容为空");
        }
        return null;
    }

    /**
     * 发送短信
     * @param msg   短信内容
     * @param mobile    手机号
     * @return  返回的发送的短信的msgId
     */
    public static String postSMS(String msg,String mobile){
        return postSMS(SMS_URL,SMS_ACCOUNT,SMS_PASSWORD,msg,mobile);
    }

    public static void main(String[] args) {
        String msg = "中国银行";
        String mobile = "15823537925";
        String msgId = postSMS(msg,mobile);
        System.out.println("短信的msgId="+msgId);
    }
}
